/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package negocio;

import Utilidades.VariaveisEstaticas;
import dao.ManterFuncionarioDAO;
import dominio.Funcionario;
import java.util.List;
import javax.persistence.PersistenceException;

/**
 *
 * @author Gutto
 */
public class ManterFuncionarioNegocio {
    private ManterFuncionarioDAO manterFuncionarioDAO;

    public ManterFuncionarioNegocio(){
        manterFuncionarioDAO = new ManterFuncionarioDAO();
    }

    /**
     * Método que irá chamar o create() do DAO, armazenando o funcionario no BD.
     *@param funcionario Funcionario
     * @return SUCESSO(1) caso o funcionario seja inserido com êxito; ERRO_DUPLICAÇÃO(2) caso ocorra
     * o funcionario já exista; ERRO_BD(3) erro de persistência.
     */
    public int create(Funcionario funcionario) {
        try {
            manterFuncionarioDAO.create(funcionario);
            return VariaveisEstaticas.SUCESSO;
        } catch (PersistenceException p) {
            return VariaveisEstaticas.ERRO_DUPLICACAO;
        } catch (Exception e) {
            return VariaveisEstaticas.ERRO_BD;
        }
    }
    /**
     * Método que irá chamar o edit() do DAO, editando o funcionario no BD.
     *@param funcionario Funcionario
     * @return SUCESSO(1) int caso o funcionario seja inserido com êxito; ERRO_DUPLICAÇÃO(2) int caso ocorra
     * o funcionario já exista; ERRO_BD(3) int erro de persistência.
     */
    public int edit(Funcionario funcionario) {
        try {
            manterFuncionarioDAO.edit(funcionario);
            return VariaveisEstaticas.SUCESSO;
        } catch (PersistenceException p) {
            return VariaveisEstaticas.ERRO_DUPLICACAO;
        } catch (Exception e) {
            return VariaveisEstaticas.ERRO_BD;
        }
    }

    /**
     * Método que irá chamar o destroy() do DAO, deletando o funcionario no BD.
     *@param funcionario Funcionario
     * @return SUCESSO(1) int caso o funcionario seja inserido com êxito; ERRO_BD(3) int erro de persistência.
     */
    public int destroy(Funcionario funcionario) {
        try {
            manterFuncionarioDAO.destroy(funcionario.getCodigoFuncionario());
            return VariaveisEstaticas.SUCESSO;
        } catch (Exception e) {
            return VariaveisEstaticas.ERRO_BD;
        }
    }
    /**
     * Método responsável por chamar o método findFuncionarioEntities() do DAO. Retorna uma lista de funcionarios.
     * @return List<Funcionario>
     */
    public List<Funcionario> findFuncionarioEntities() {
        return manterFuncionarioDAO.findFuncionarioEntities();
    }

    /**
     * Método responsável por chamar o método findFuncionario() do DAO. Retorna o funcionario pesquisado.
     * @return Funcionario
     */
    public Funcionario findFuncionario(Funcionario f) {
        return manterFuncionarioDAO.findFuncionario(f.getCodigoFuncionario());
    }
}

